<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>register_object_model_3d_pair [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_3dobjectmodel.html">3D Object Model</a> / <a href="toc_3dobjectmodel_transformations.html">变换</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">register_object_model_3d_pair</span><span data-if="c" style="display:none;">T_register_object_model_3d_pair</span><span data-if="cpp" style="display:none;">RegisterObjectModel3dPair</span><span data-if="dotnet" style="display:none;">RegisterObjectModel3dPair</span><span data-if="python" style="display:none;">register_object_model_3d_pair</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">register_object_model_3d_pair</span><span data-if="c" style="display:none;">T_register_object_model_3d_pair</span><span data-if="cpp" style="display:none;">RegisterObjectModel3dPair</span><span data-if="dotnet" style="display:none;">RegisterObjectModel3dPair</span><span data-if="python" style="display:none;">register_object_model_3d_pair</span></code> — Search for a transformation between two 3D object models.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>register_object_model_3d_pair</b>( :  : <a href="#ObjectModel3D1"><i>ObjectModel3D1</i></a>, <a href="#ObjectModel3D2"><i>ObjectModel3D2</i></a>, <a href="#Method"><i>Method</i></a>, <a href="#GenParamName"><i>GenParamName</i></a>, <a href="#GenParamValue"><i>GenParamValue</i></a> : <a href="#Pose"><i>Pose</i></a>, <a href="#Score"><i>Score</i></a>)</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_register_object_model_3d_pair</b>(const Htuple <a href="#ObjectModel3D1"><i>ObjectModel3D1</i></a>, const Htuple <a href="#ObjectModel3D2"><i>ObjectModel3D2</i></a>, const Htuple <a href="#Method"><i>Method</i></a>, const Htuple <a href="#GenParamName"><i>GenParamName</i></a>, const Htuple <a href="#GenParamValue"><i>GenParamValue</i></a>, Htuple* <a href="#Pose"><i>Pose</i></a>, Htuple* <a href="#Score"><i>Score</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>RegisterObjectModel3dPair</b>(const HTuple&amp; <a href="#ObjectModel3D1"><i>ObjectModel3D1</i></a>, const HTuple&amp; <a href="#ObjectModel3D2"><i>ObjectModel3D2</i></a>, const HTuple&amp; <a href="#Method"><i>Method</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>, HTuple* <a href="#Pose"><i>Pose</i></a>, HTuple* <a href="#Score"><i>Score</i></a>)</code></p>
<p>
<code><a href="HPose.html">HPose</a> <a href="HObjectModel3D.html">HObjectModel3D</a>::<b>RegisterObjectModel3dPair</b>(const HObjectModel3D&amp; <a href="#ObjectModel3D2"><i>ObjectModel3D2</i></a>, const HString&amp; <a href="#Method"><i>Method</i></a>, const HTuple&amp; <a href="#GenParamName"><i>GenParamName</i></a>, const HTuple&amp; <a href="#GenParamValue"><i>GenParamValue</i></a>, HTuple* <a href="#Score"><i>Score</i></a>) const</code></p>
<p>
<code><a href="HPose.html">HPose</a> <a href="HObjectModel3D.html">HObjectModel3D</a>::<b>RegisterObjectModel3dPair</b>(const HObjectModel3D&amp; <a href="#ObjectModel3D2"><i>ObjectModel3D2</i></a>, const HString&amp; <a href="#Method"><i>Method</i></a>, const HString&amp; <a href="#GenParamName"><i>GenParamName</i></a>, double <a href="#GenParamValue"><i>GenParamValue</i></a>, HTuple* <a href="#Score"><i>Score</i></a>) const</code></p>
<p>
<code><a href="HPose.html">HPose</a> <a href="HObjectModel3D.html">HObjectModel3D</a>::<b>RegisterObjectModel3dPair</b>(const HObjectModel3D&amp; <a href="#ObjectModel3D2"><i>ObjectModel3D2</i></a>, const char* <a href="#Method"><i>Method</i></a>, const char* <a href="#GenParamName"><i>GenParamName</i></a>, double <a href="#GenParamValue"><i>GenParamValue</i></a>, HTuple* <a href="#Score"><i>Score</i></a>) const</code></p>
<p>
<code><a href="HPose.html">HPose</a> <a href="HObjectModel3D.html">HObjectModel3D</a>::<b>RegisterObjectModel3dPair</b>(const HObjectModel3D&amp; <a href="#ObjectModel3D2"><i>ObjectModel3D2</i></a>, const wchar_t* <a href="#Method"><i>Method</i></a>, const wchar_t* <a href="#GenParamName"><i>GenParamName</i></a>, double <a href="#GenParamValue"><i>GenParamValue</i></a>, HTuple* <a href="#Score"><i>Score</i></a>) const  <span class="signnote">
            (
            Windows only)
          </span></code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>RegisterObjectModel3dPair</b>(<a href="HTuple.html">HTuple</a> <a href="#ObjectModel3D1"><i>objectModel3D1</i></a>, <a href="HTuple.html">HTuple</a> <a href="#ObjectModel3D2"><i>objectModel3D2</i></a>, <a href="HTuple.html">HTuple</a> <a href="#Method"><i>method</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#Pose"><i>pose</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#Score"><i>score</i></a>)</code></p>
<p>
<code><a href="HPose.html">HPose</a> <a href="HObjectModel3D.html">HObjectModel3D</a>.<b>RegisterObjectModel3dPair</b>(<a href="HObjectModel3D.html">HObjectModel3D</a> <a href="#ObjectModel3D2"><i>objectModel3D2</i></a>, string <a href="#Method"><i>method</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamName"><i>genParamName</i></a>, <a href="HTuple.html">HTuple</a> <a href="#GenParamValue"><i>genParamValue</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#Score"><i>score</i></a>)</code></p>
<p>
<code><a href="HPose.html">HPose</a> <a href="HObjectModel3D.html">HObjectModel3D</a>.<b>RegisterObjectModel3dPair</b>(<a href="HObjectModel3D.html">HObjectModel3D</a> <a href="#ObjectModel3D2"><i>objectModel3D2</i></a>, string <a href="#Method"><i>method</i></a>, string <a href="#GenParamName"><i>genParamName</i></a>, double <a href="#GenParamValue"><i>genParamValue</i></a>, out <a href="HTuple.html">HTuple</a> <a href="#Score"><i>score</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>register_object_model_3d_pair</b>(<a href="#ObjectModel3D1"><i>object_model_3d1</i></a>: HHandle, <a href="#ObjectModel3D2"><i>object_model_3d2</i></a>: HHandle, <a href="#Method"><i>method</i></a>: str, <a href="#GenParamName"><i>gen_param_name</i></a>: MaybeSequence[str], <a href="#GenParamValue"><i>gen_param_value</i></a>: MaybeSequence[Union[int, str, float]]) -&gt; Tuple[Sequence[Union[int, float]], Sequence[float]]</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p><code><span data-if="hdevelop" style="display:inline">register_object_model_3d_pair</span><span data-if="c" style="display:none">register_object_model_3d_pair</span><span data-if="cpp" style="display:none">RegisterObjectModel3dPair</span><span data-if="com" style="display:none">RegisterObjectModel3dPair</span><span data-if="dotnet" style="display:none">RegisterObjectModel3dPair</span><span data-if="python" style="display:none">register_object_model_3d_pair</span></code> searches for a transformation
between two 3D object models having an optimal alignment.
This process is called registration.
The transformation that is returned
in <a href="#Pose"><i><code><span data-if="hdevelop" style="display:inline">Pose</span><span data-if="c" style="display:none">Pose</span><span data-if="cpp" style="display:none">Pose</span><span data-if="com" style="display:none">Pose</span><span data-if="dotnet" style="display:none">pose</span><span data-if="python" style="display:none">pose</span></code></i></a> can be used to transform <a href="#ObjectModel3D1"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3D1</span><span data-if="c" style="display:none">ObjectModel3D1</span><span data-if="cpp" style="display:none">ObjectModel3D1</span><span data-if="com" style="display:none">ObjectModel3D1</span><span data-if="dotnet" style="display:none">objectModel3D1</span><span data-if="python" style="display:none">object_model_3d1</span></code></i></a>
to the reference frame of the second object <a href="#ObjectModel3D2"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3D2</span><span data-if="c" style="display:none">ObjectModel3D2</span><span data-if="cpp" style="display:none">ObjectModel3D2</span><span data-if="com" style="display:none">ObjectModel3D2</span><span data-if="dotnet" style="display:none">objectModel3D2</span><span data-if="python" style="display:none">object_model_3d2</span></code></i></a>.
<a href="#Score"><i><code><span data-if="hdevelop" style="display:inline">Score</span><span data-if="c" style="display:none">Score</span><span data-if="cpp" style="display:none">Score</span><span data-if="com" style="display:none">Score</span><span data-if="dotnet" style="display:none">score</span><span data-if="python" style="display:none">score</span></code></i></a> returns the ratio of the overlapping
parts to the not overlapping parts of the two 3D object models.
If the two objects are not overlapping, no pose is returned.
The parameter <a href="#Method"><i><code><span data-if="hdevelop" style="display:inline">Method</span><span data-if="c" style="display:none">Method</span><span data-if="cpp" style="display:none">Method</span><span data-if="com" style="display:none">Method</span><span data-if="dotnet" style="display:none">method</span><span data-if="python" style="display:none">method</span></code></i></a> decides if the initial relative
position is calculated by <i><span data-if="hdevelop" style="display:inline">'matching'</span><span data-if="c" style="display:none">"matching"</span><span data-if="cpp" style="display:none">"matching"</span><span data-if="com" style="display:none">"matching"</span><span data-if="dotnet" style="display:none">"matching"</span><span data-if="python" style="display:none">"matching"</span></i> or if only
the pose refinement is performed in relation to the then assumed
common global reference frame, which can be selected directly with
<i><span data-if="hdevelop" style="display:inline">'icp'</span><span data-if="c" style="display:none">"icp"</span><span data-if="cpp" style="display:none">"icp"</span><span data-if="com" style="display:none">"icp"</span><span data-if="dotnet" style="display:none">"icp"</span><span data-if="python" style="display:none">"icp"</span></i>.
</p>
<p>The accuracy of the returned pose is limited to around
0.1% of the size of the point clouds due to numerical reasons. The accuracy
further depends on the noise of the data points, the number of
data points and the shape of the point clouds.
</p>
<p>The matching process and the following refinement can be controlled using
the following name-value pairs in
<a href="#GenParamName"><i><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></i></a> and <a href="#GenParamValue"><i><code><span data-if="hdevelop" style="display:inline">GenParamValue</span><span data-if="c" style="display:none">GenParamValue</span><span data-if="cpp" style="display:none">GenParamValue</span><span data-if="com" style="display:none">GenParamValue</span><span data-if="dotnet" style="display:none">genParamValue</span><span data-if="python" style="display:none">gen_param_value</span></code></i></a>:
</p>
<dl class="generic">

<dt><b><i><span data-if="hdevelop" style="display:inline">'default_parameters'</span><span data-if="c" style="display:none">"default_parameters"</span><span data-if="cpp" style="display:none">"default_parameters"</span><span data-if="com" style="display:none">"default_parameters"</span><span data-if="dotnet" style="display:none">"default_parameters"</span><span data-if="python" style="display:none">"default_parameters"</span></i>:</b></dt>
<dd>
<p>
 To allow an easy control over the
parameters, three different sets of parameters are available.
Selecting the <i><span data-if="hdevelop" style="display:inline">'fast'</span><span data-if="c" style="display:none">"fast"</span><span data-if="cpp" style="display:none">"fast"</span><span data-if="com" style="display:none">"fast"</span><span data-if="dotnet" style="display:none">"fast"</span><span data-if="python" style="display:none">"fast"</span></i>
parameter set allows a shorter calculation time.
<i><span data-if="hdevelop" style="display:inline">'accurate'</span><span data-if="c" style="display:none">"accurate"</span><span data-if="cpp" style="display:none">"accurate"</span><span data-if="com" style="display:none">"accurate"</span><span data-if="dotnet" style="display:none">"accurate"</span><span data-if="python" style="display:none">"accurate"</span></i> will give more accurate results.
<i><span data-if="hdevelop" style="display:inline">'robust'</span><span data-if="c" style="display:none">"robust"</span><span data-if="cpp" style="display:none">"robust"</span><span data-if="com" style="display:none">"robust"</span><span data-if="dotnet" style="display:none">"robust"</span><span data-if="python" style="display:none">"robust"</span></i> additionally improves the quality of the resulting
<a href="#Score"><i><code><span data-if="hdevelop" style="display:inline">Score</span><span data-if="c" style="display:none">Score</span><span data-if="cpp" style="display:none">Score</span><span data-if="com" style="display:none">Score</span><span data-if="dotnet" style="display:none">score</span><span data-if="python" style="display:none">score</span></code></i></a> at the cost of calculation time.</p>
<p>
<span class="pardesc"><span class="parcat">List of values:
      </span></span> <i><span data-if="hdevelop" style="display:inline">'fast'</span><span data-if="c" style="display:none">"fast"</span><span data-if="cpp" style="display:none">"fast"</span><span data-if="com" style="display:none">"fast"</span><span data-if="dotnet" style="display:none">"fast"</span><span data-if="python" style="display:none">"fast"</span></i>, <i><span data-if="hdevelop" style="display:inline">'accurate'</span><span data-if="c" style="display:none">"accurate"</span><span data-if="cpp" style="display:none">"accurate"</span><span data-if="com" style="display:none">"accurate"</span><span data-if="dotnet" style="display:none">"accurate"</span><span data-if="python" style="display:none">"accurate"</span></i>,
<i><span data-if="hdevelop" style="display:inline">'robust'</span><span data-if="c" style="display:none">"robust"</span><span data-if="cpp" style="display:none">"robust"</span><span data-if="com" style="display:none">"robust"</span><span data-if="dotnet" style="display:none">"robust"</span><span data-if="python" style="display:none">"robust"</span></i>.</p>
<p>
<span class="pardesc"><span class="parcat">Default:
      </span></span> <i><span data-if="hdevelop" style="display:inline">'accurate'</span><span data-if="c" style="display:none">"accurate"</span><span data-if="cpp" style="display:none">"accurate"</span><span data-if="com" style="display:none">"accurate"</span><span data-if="dotnet" style="display:none">"accurate"</span><span data-if="python" style="display:none">"accurate"</span></i>.
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'rel_sampling_distance'</span><span data-if="c" style="display:none">"rel_sampling_distance"</span><span data-if="cpp" style="display:none">"rel_sampling_distance"</span><span data-if="com" style="display:none">"rel_sampling_distance"</span><span data-if="dotnet" style="display:none">"rel_sampling_distance"</span><span data-if="python" style="display:none">"rel_sampling_distance"</span></i>:</b></dt>
<dd>
<p>

This parameter controls the relative sampling rate of the 3D object
models that is used to represent the surfaces for the computation.
This value is relative to the diameter of the respective object
and defines the minimal distance between two sampled points.
A higher value will lead to faster and a lower value to more
accurate results. This parameter can also be set for each object
independently by using <i><span data-if="hdevelop" style="display:inline">'rel_sampling_distance_obj1'</span><span data-if="c" style="display:none">"rel_sampling_distance_obj1"</span><span data-if="cpp" style="display:none">"rel_sampling_distance_obj1"</span><span data-if="com" style="display:none">"rel_sampling_distance_obj1"</span><span data-if="dotnet" style="display:none">"rel_sampling_distance_obj1"</span><span data-if="python" style="display:none">"rel_sampling_distance_obj1"</span></i> and
<i><span data-if="hdevelop" style="display:inline">'rel_sampling_distance_obj2'</span><span data-if="c" style="display:none">"rel_sampling_distance_obj2"</span><span data-if="cpp" style="display:none">"rel_sampling_distance_obj2"</span><span data-if="com" style="display:none">"rel_sampling_distance_obj2"</span><span data-if="dotnet" style="display:none">"rel_sampling_distance_obj2"</span><span data-if="python" style="display:none">"rel_sampling_distance_obj2"</span></i>.</p>
<p>
<span class="pardesc"><span class="parcat">Suggested values:
      </span></span> <i>0.03</i>, <i>0.05</i>, <i>0.07</i>.</p>
<p>
<span class="pardesc"><span class="parcat">Default:
      </span></span> <i>0.05</i>.
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'key_point_fraction'</span><span data-if="c" style="display:none">"key_point_fraction"</span><span data-if="cpp" style="display:none">"key_point_fraction"</span><span data-if="com" style="display:none">"key_point_fraction"</span><span data-if="dotnet" style="display:none">"key_point_fraction"</span><span data-if="python" style="display:none">"key_point_fraction"</span></i>:</b></dt>
<dd>
<p>
  This parameter controls the ratio
of sampled points that are considered as key points for the matching
process. The number is relative to the sampled points of the model.
Reducing this ratio speeds up the process, whereas increasing
leads to more robust results. This parameter can be also set
for each object independently by using
<i><span data-if="hdevelop" style="display:inline">'key_point_fraction_obj1'</span><span data-if="c" style="display:none">"key_point_fraction_obj1"</span><span data-if="cpp" style="display:none">"key_point_fraction_obj1"</span><span data-if="com" style="display:none">"key_point_fraction_obj1"</span><span data-if="dotnet" style="display:none">"key_point_fraction_obj1"</span><span data-if="python" style="display:none">"key_point_fraction_obj1"</span></i> and
<i><span data-if="hdevelop" style="display:inline">'key_point_fraction_obj2'</span><span data-if="c" style="display:none">"key_point_fraction_obj2"</span><span data-if="cpp" style="display:none">"key_point_fraction_obj2"</span><span data-if="com" style="display:none">"key_point_fraction_obj2"</span><span data-if="dotnet" style="display:none">"key_point_fraction_obj2"</span><span data-if="python" style="display:none">"key_point_fraction_obj2"</span></i>.</p>
<p>
<span class="pardesc"><span class="parcat">Suggested values:
      </span></span> <i>0.2</i>, <i>0.3</i>, <i>0.4</i>.</p>
<p>
<span class="pardesc"><span class="parcat">Default:
      </span></span> <i>0.3</i>.
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'pose_ref_num_steps'</span><span data-if="c" style="display:none">"pose_ref_num_steps"</span><span data-if="cpp" style="display:none">"pose_ref_num_steps"</span><span data-if="com" style="display:none">"pose_ref_num_steps"</span><span data-if="dotnet" style="display:none">"pose_ref_num_steps"</span><span data-if="python" style="display:none">"pose_ref_num_steps"</span></i>:</b></dt>
<dd>
<p>
  The number of iterative  steps
used for the pose refinement. </p>
<p>
<span class="pardesc"><span class="parcat">Suggested values:
      </span></span> <i>5</i>, <i>7</i>, <i>10</i>.</p>
<p>
<span class="pardesc"><span class="parcat">Default:
      </span></span> <i>5</i>.
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'pose_ref_sub_sampling'</span><span data-if="c" style="display:none">"pose_ref_sub_sampling"</span><span data-if="cpp" style="display:none">"pose_ref_sub_sampling"</span><span data-if="com" style="display:none">"pose_ref_sub_sampling"</span><span data-if="dotnet" style="display:none">"pose_ref_sub_sampling"</span><span data-if="python" style="display:none">"pose_ref_sub_sampling"</span></i>:</b></dt>
<dd>
<p>
 Number of points that are skipped
for the pose refinement. The value specifies the number of points
that  are skipped per selected point. Increasing this value
allows faster convergence at the cost of less accurate results.
This parameter is only relevant for the smaller of the two objects.</p>
<p>
<span class="pardesc"><span class="parcat">Suggested values:
      </span></span> <i>1</i>, <i>2</i>, <i>20</i>.</p>
<p>
<span class="pardesc"><span class="parcat">Default:
      </span></span> <i>2</i>.
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'pose_ref_dist_threshold_rel'</span><span data-if="c" style="display:none">"pose_ref_dist_threshold_rel"</span><span data-if="cpp" style="display:none">"pose_ref_dist_threshold_rel"</span><span data-if="com" style="display:none">"pose_ref_dist_threshold_rel"</span><span data-if="dotnet" style="display:none">"pose_ref_dist_threshold_rel"</span><span data-if="python" style="display:none">"pose_ref_dist_threshold_rel"</span></i>:</b></dt>
<dd>
<p>
  Maximum distance that two
faces might have to be considered as potentially overlapping.
This value is relative to the diameter of the larger object. </p>
<p>
<span class="pardesc"><span class="parcat">Suggested values:
      </span></span> <i>0.05</i>, <i>0.1</i>, <i>0.15</i>.</p>
<p>
<span class="pardesc"><span class="parcat">Default:
      </span></span> <i>0.1</i>.
</p>
</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'pose_ref_dist_threshold_abs'</span><span data-if="c" style="display:none">"pose_ref_dist_threshold_abs"</span><span data-if="cpp" style="display:none">"pose_ref_dist_threshold_abs"</span><span data-if="com" style="display:none">"pose_ref_dist_threshold_abs"</span><span data-if="dotnet" style="display:none">"pose_ref_dist_threshold_abs"</span><span data-if="python" style="display:none">"pose_ref_dist_threshold_abs"</span></i>:</b></dt>
<dd>
<p>
  Maximum distance that two
faces might have to be considered as potentially overlapping, as
absolute value. </p>

</dd>

<dt><b><i><span data-if="hdevelop" style="display:inline">'model_invert_normals'</span><span data-if="c" style="display:none">"model_invert_normals"</span><span data-if="cpp" style="display:none">"model_invert_normals"</span><span data-if="com" style="display:none">"model_invert_normals"</span><span data-if="dotnet" style="display:none">"model_invert_normals"</span><span data-if="python" style="display:none">"model_invert_normals"</span></i>:</b></dt>
<dd>
<p>
 Invert the normals of the smaller
object, if its normals are inverted relative to the other object.</p>
<p>
<span class="pardesc"><span class="parcat">List of values:
      </span></span> <i><span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span></i>, <i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i>.</p>
<p>
<span class="pardesc"><span class="parcat">Default:
      </span></span> <i><span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></i>.
</p>
</dd>
</dl>
<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  <li>未经并行化处理。</li>
</ul>
<p>This operator supports canceling timeouts and interrupts.</p>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="ObjectModel3D1" class="parname"><b><code><span data-if="hdevelop" style="display:inline">ObjectModel3D1</span><span data-if="c" style="display:none">ObjectModel3D1</span><span data-if="cpp" style="display:none">ObjectModel3D1</span><span data-if="com" style="display:none">ObjectModel3D1</span><span data-if="dotnet" style="display:none">objectModel3D1</span><span data-if="python" style="display:none">object_model_3d1</span></code></b> (input_control)  </span><span>object_model_3d <code>→</code> <span data-if="dotnet" style="display:none"><a href="HObjectModel3D.html">HObjectModel3D</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">HHandle</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Handle of the first 3D object model.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="ObjectModel3D2" class="parname"><b><code><span data-if="hdevelop" style="display:inline">ObjectModel3D2</span><span data-if="c" style="display:none">ObjectModel3D2</span><span data-if="cpp" style="display:none">ObjectModel3D2</span><span data-if="com" style="display:none">ObjectModel3D2</span><span data-if="dotnet" style="display:none">objectModel3D2</span><span data-if="python" style="display:none">object_model_3d2</span></code></b> (input_control)  </span><span>object_model_3d <code>→</code> <span data-if="dotnet" style="display:none"><a href="HObjectModel3D.html">HObjectModel3D</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">HHandle</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (handle)</span><span data-if="dotnet" style="display:none"> (<i>IntPtr</i>)</span><span data-if="cpp" style="display:none"> (<i>HHandle</i>)</span><span data-if="c" style="display:none"> (<i>handle</i>)</span></span>
</div>
<p class="pardesc">Handle of the second 3D object model.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="Method" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Method</span><span data-if="c" style="display:none">Method</span><span data-if="cpp" style="display:none">Method</span><span data-if="com" style="display:none">Method</span><span data-if="dotnet" style="display:none">method</span><span data-if="python" style="display:none">method</span></code></b> (input_control)  </span><span>string <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">str</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Method for the registration.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>
    <span data-if="hdevelop" style="display:inline">'matching'</span>
    <span data-if="c" style="display:none">"matching"</span>
    <span data-if="cpp" style="display:none">"matching"</span>
    <span data-if="com" style="display:none">"matching"</span>
    <span data-if="dotnet" style="display:none">"matching"</span>
    <span data-if="python" style="display:none">"matching"</span>
</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'icp'</span><span data-if="c" style="display:none">"icp"</span><span data-if="cpp" style="display:none">"icp"</span><span data-if="com" style="display:none">"icp"</span><span data-if="dotnet" style="display:none">"icp"</span><span data-if="python" style="display:none">"icp"</span>, <span data-if="hdevelop" style="display:inline">'matching'</span><span data-if="c" style="display:none">"matching"</span><span data-if="cpp" style="display:none">"matching"</span><span data-if="com" style="display:none">"matching"</span><span data-if="dotnet" style="display:none">"matching"</span><span data-if="python" style="display:none">"matching"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="GenParamName" class="parname"><b><code><span data-if="hdevelop" style="display:inline">GenParamName</span><span data-if="c" style="display:none">GenParamName</span><span data-if="cpp" style="display:none">GenParamName</span><span data-if="com" style="display:none">GenParamName</span><span data-if="dotnet" style="display:none">genParamName</span><span data-if="python" style="display:none">gen_param_name</span></code></b> (input_control)  </span><span>string(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">MaybeSequence[str]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (string)</span><span data-if="dotnet" style="display:none"> (<i>string</i>)</span><span data-if="cpp" style="display:none"> (<i>HString</i>)</span><span data-if="c" style="display:none"> (<i>char*</i>)</span></span>
</div>
<p class="pardesc">Names of the generic parameters.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>[]</p>
<p class="pardesc"><span class="parcat">List of values:
      </span><span data-if="hdevelop" style="display:inline">'default_parameters'</span><span data-if="c" style="display:none">"default_parameters"</span><span data-if="cpp" style="display:none">"default_parameters"</span><span data-if="com" style="display:none">"default_parameters"</span><span data-if="dotnet" style="display:none">"default_parameters"</span><span data-if="python" style="display:none">"default_parameters"</span>, <span data-if="hdevelop" style="display:inline">'key_point_fraction'</span><span data-if="c" style="display:none">"key_point_fraction"</span><span data-if="cpp" style="display:none">"key_point_fraction"</span><span data-if="com" style="display:none">"key_point_fraction"</span><span data-if="dotnet" style="display:none">"key_point_fraction"</span><span data-if="python" style="display:none">"key_point_fraction"</span>, <span data-if="hdevelop" style="display:inline">'key_point_fraction_obj1'</span><span data-if="c" style="display:none">"key_point_fraction_obj1"</span><span data-if="cpp" style="display:none">"key_point_fraction_obj1"</span><span data-if="com" style="display:none">"key_point_fraction_obj1"</span><span data-if="dotnet" style="display:none">"key_point_fraction_obj1"</span><span data-if="python" style="display:none">"key_point_fraction_obj1"</span>, <span data-if="hdevelop" style="display:inline">'key_point_fraction_obj2'</span><span data-if="c" style="display:none">"key_point_fraction_obj2"</span><span data-if="cpp" style="display:none">"key_point_fraction_obj2"</span><span data-if="com" style="display:none">"key_point_fraction_obj2"</span><span data-if="dotnet" style="display:none">"key_point_fraction_obj2"</span><span data-if="python" style="display:none">"key_point_fraction_obj2"</span>, <span data-if="hdevelop" style="display:inline">'model_invert_normals'</span><span data-if="c" style="display:none">"model_invert_normals"</span><span data-if="cpp" style="display:none">"model_invert_normals"</span><span data-if="com" style="display:none">"model_invert_normals"</span><span data-if="dotnet" style="display:none">"model_invert_normals"</span><span data-if="python" style="display:none">"model_invert_normals"</span>, <span data-if="hdevelop" style="display:inline">'pose_ref_dist_threshold_abs'</span><span data-if="c" style="display:none">"pose_ref_dist_threshold_abs"</span><span data-if="cpp" style="display:none">"pose_ref_dist_threshold_abs"</span><span data-if="com" style="display:none">"pose_ref_dist_threshold_abs"</span><span data-if="dotnet" style="display:none">"pose_ref_dist_threshold_abs"</span><span data-if="python" style="display:none">"pose_ref_dist_threshold_abs"</span>, <span data-if="hdevelop" style="display:inline">'pose_ref_dist_threshold_rel'</span><span data-if="c" style="display:none">"pose_ref_dist_threshold_rel"</span><span data-if="cpp" style="display:none">"pose_ref_dist_threshold_rel"</span><span data-if="com" style="display:none">"pose_ref_dist_threshold_rel"</span><span data-if="dotnet" style="display:none">"pose_ref_dist_threshold_rel"</span><span data-if="python" style="display:none">"pose_ref_dist_threshold_rel"</span>, <span data-if="hdevelop" style="display:inline">'pose_ref_num_steps'</span><span data-if="c" style="display:none">"pose_ref_num_steps"</span><span data-if="cpp" style="display:none">"pose_ref_num_steps"</span><span data-if="com" style="display:none">"pose_ref_num_steps"</span><span data-if="dotnet" style="display:none">"pose_ref_num_steps"</span><span data-if="python" style="display:none">"pose_ref_num_steps"</span>, <span data-if="hdevelop" style="display:inline">'pose_ref_sub_sampling'</span><span data-if="c" style="display:none">"pose_ref_sub_sampling"</span><span data-if="cpp" style="display:none">"pose_ref_sub_sampling"</span><span data-if="com" style="display:none">"pose_ref_sub_sampling"</span><span data-if="dotnet" style="display:none">"pose_ref_sub_sampling"</span><span data-if="python" style="display:none">"pose_ref_sub_sampling"</span>, <span data-if="hdevelop" style="display:inline">'rel_sampling_distance'</span><span data-if="c" style="display:none">"rel_sampling_distance"</span><span data-if="cpp" style="display:none">"rel_sampling_distance"</span><span data-if="com" style="display:none">"rel_sampling_distance"</span><span data-if="dotnet" style="display:none">"rel_sampling_distance"</span><span data-if="python" style="display:none">"rel_sampling_distance"</span>, <span data-if="hdevelop" style="display:inline">'rel_sampling_distance_obj1'</span><span data-if="c" style="display:none">"rel_sampling_distance_obj1"</span><span data-if="cpp" style="display:none">"rel_sampling_distance_obj1"</span><span data-if="com" style="display:none">"rel_sampling_distance_obj1"</span><span data-if="dotnet" style="display:none">"rel_sampling_distance_obj1"</span><span data-if="python" style="display:none">"rel_sampling_distance_obj1"</span>, <span data-if="hdevelop" style="display:inline">'rel_sampling_distance_obj2'</span><span data-if="c" style="display:none">"rel_sampling_distance_obj2"</span><span data-if="cpp" style="display:none">"rel_sampling_distance_obj2"</span><span data-if="com" style="display:none">"rel_sampling_distance_obj2"</span><span data-if="dotnet" style="display:none">"rel_sampling_distance_obj2"</span><span data-if="python" style="display:none">"rel_sampling_distance_obj2"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="GenParamValue" class="parname"><b><code><span data-if="hdevelop" style="display:inline">GenParamValue</span><span data-if="c" style="display:none">GenParamValue</span><span data-if="cpp" style="display:none">GenParamValue</span><span data-if="com" style="display:none">GenParamValue</span><span data-if="dotnet" style="display:none">genParamValue</span><span data-if="python" style="display:none">gen_param_value</span></code></b> (input_control)  </span><span>number(-array) <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">MaybeSequence[Union[int, str, float]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer / </span><span data-if="hdevelop" style="display:inline">string)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long / </span><span data-if="dotnet" style="display:none">string)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong / </span><span data-if="cpp" style="display:none">HString)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong / </span><span data-if="c" style="display:none">char*)</span></span>
</div>
<p class="pardesc">Values of the generic parameters.</p>
<p class="pardesc"><span class="parcat">Default:
      </span>[]</p>
<p class="pardesc"><span class="parcat">Suggested values:
      </span><span data-if="hdevelop" style="display:inline">'fast'</span><span data-if="c" style="display:none">"fast"</span><span data-if="cpp" style="display:none">"fast"</span><span data-if="com" style="display:none">"fast"</span><span data-if="dotnet" style="display:none">"fast"</span><span data-if="python" style="display:none">"fast"</span>, <span data-if="hdevelop" style="display:inline">'accurate'</span><span data-if="c" style="display:none">"accurate"</span><span data-if="cpp" style="display:none">"accurate"</span><span data-if="com" style="display:none">"accurate"</span><span data-if="dotnet" style="display:none">"accurate"</span><span data-if="python" style="display:none">"accurate"</span>, <span data-if="hdevelop" style="display:inline">'robust'</span><span data-if="c" style="display:none">"robust"</span><span data-if="cpp" style="display:none">"robust"</span><span data-if="com" style="display:none">"robust"</span><span data-if="dotnet" style="display:none">"robust"</span><span data-if="python" style="display:none">"robust"</span>, 0.1, 0.25, 0.5, 1, <span data-if="hdevelop" style="display:inline">'true'</span><span data-if="c" style="display:none">"true"</span><span data-if="cpp" style="display:none">"true"</span><span data-if="com" style="display:none">"true"</span><span data-if="dotnet" style="display:none">"true"</span><span data-if="python" style="display:none">"true"</span>, <span data-if="hdevelop" style="display:inline">'false'</span><span data-if="c" style="display:none">"false"</span><span data-if="cpp" style="display:none">"false"</span><span data-if="com" style="display:none">"false"</span><span data-if="dotnet" style="display:none">"false"</span><span data-if="python" style="display:none">"false"</span></p>
</div>
  <div class="par">
<div class="parhead">
<span id="Pose" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Pose</span><span data-if="c" style="display:none">Pose</span><span data-if="cpp" style="display:none">Pose</span><span data-if="com" style="display:none">Pose</span><span data-if="dotnet" style="display:none">pose</span><span data-if="python" style="display:none">pose</span></code></b> (output_control)  </span><span>pose <code>→</code> <span data-if="dotnet" style="display:none"><a href="HPose.html">HPose</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[Union[int, float]]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real / </span><span data-if="hdevelop" style="display:inline">integer)</span><span data-if="dotnet" style="display:none"> (<i>double</i> / </span><span data-if="dotnet" style="display:none">int / </span><span data-if="dotnet" style="display:none">long)</span><span data-if="cpp" style="display:none"> (<i>double</i> / </span><span data-if="cpp" style="display:none">Hlong)</span><span data-if="c" style="display:none"> (<i>double</i> / </span><span data-if="c" style="display:none">Hlong)</span></span>
</div>
<p class="pardesc">Pose to transform <a href="#ObjectModel3D1"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3D1</span><span data-if="c" style="display:none">ObjectModel3D1</span><span data-if="cpp" style="display:none">ObjectModel3D1</span><span data-if="com" style="display:none">ObjectModel3D1</span><span data-if="dotnet" style="display:none">objectModel3D1</span><span data-if="python" style="display:none">object_model_3d1</span></code></i></a> in
the reference frame of <a href="#ObjectModel3D2"><i><code><span data-if="hdevelop" style="display:inline">ObjectModel3D2</span><span data-if="c" style="display:none">ObjectModel3D2</span><span data-if="cpp" style="display:none">ObjectModel3D2</span><span data-if="com" style="display:none">ObjectModel3D2</span><span data-if="dotnet" style="display:none">objectModel3D2</span><span data-if="python" style="display:none">object_model_3d2</span></code></i></a>.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="Score" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Score</span><span data-if="c" style="display:none">Score</span><span data-if="cpp" style="display:none">Score</span><span data-if="com" style="display:none">Score</span><span data-if="dotnet" style="display:none">score</span><span data-if="python" style="display:none">score</span></code></b> (output_control)  </span><span>number-array <code>→</code> <span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Overlapping of the two 3D object models.</p>
</div>
<h2 id="sec_example_all">例程 (HDevelop)</h2>
<pre class="example">
* Generate two boxes
gen_box_object_model_3d ([0,0,0,0,0,0,0],3,2,1, ObjectModel3D1)
gen_box_object_model_3d ([0,0,0.5,15,0,0,0],3,2,1, ObjectModel3D2)
* Match them
register_object_model_3d_pair (ObjectModel3D1, ObjectModel3D2, 'matching',\
                              [], [], Pose, Score)
</pre>
<h2 id="sec_result">结果</h2>
<p><code><span data-if="hdevelop" style="display:inline">register_object_model_3d_pair</span><span data-if="c" style="display:none">register_object_model_3d_pair</span><span data-if="cpp" style="display:none">RegisterObjectModel3dPair</span><span data-if="com" style="display:none">RegisterObjectModel3dPair</span><span data-if="dotnet" style="display:none">RegisterObjectModel3dPair</span><span data-if="python" style="display:none">register_object_model_3d_pair</span></code> returns <TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
     if all parameters
are correct. 如有必要，将引发异常。</p>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="read_object_model_3d.html"><span data-if="hdevelop" style="display:inline">read_object_model_3d</span><span data-if="c" style="display:none">read_object_model_3d</span><span data-if="cpp" style="display:none">ReadObjectModel3d</span><span data-if="com" style="display:none">ReadObjectModel3d</span><span data-if="dotnet" style="display:none">ReadObjectModel3d</span><span data-if="python" style="display:none">read_object_model_3d</span></a></code>, 
<code><a href="gen_object_model_3d_from_points.html"><span data-if="hdevelop" style="display:inline">gen_object_model_3d_from_points</span><span data-if="c" style="display:none">gen_object_model_3d_from_points</span><span data-if="cpp" style="display:none">GenObjectModel3dFromPoints</span><span data-if="com" style="display:none">GenObjectModel3dFromPoints</span><span data-if="dotnet" style="display:none">GenObjectModel3dFromPoints</span><span data-if="python" style="display:none">gen_object_model_3d_from_points</span></a></code>, 
<code><a href="xyz_to_object_model_3d.html"><span data-if="hdevelop" style="display:inline">xyz_to_object_model_3d</span><span data-if="c" style="display:none">xyz_to_object_model_3d</span><span data-if="cpp" style="display:none">XyzToObjectModel3d</span><span data-if="com" style="display:none">XyzToObjectModel3d</span><span data-if="dotnet" style="display:none">XyzToObjectModel3d</span><span data-if="python" style="display:none">xyz_to_object_model_3d</span></a></code>
</p>
<h2 id="sec_successors">可能的后置算子</h2>
<p>
<code><a href="register_object_model_3d_global.html"><span data-if="hdevelop" style="display:inline">register_object_model_3d_global</span><span data-if="c" style="display:none">register_object_model_3d_global</span><span data-if="cpp" style="display:none">RegisterObjectModel3dGlobal</span><span data-if="com" style="display:none">RegisterObjectModel3dGlobal</span><span data-if="dotnet" style="display:none">RegisterObjectModel3dGlobal</span><span data-if="python" style="display:none">register_object_model_3d_global</span></a></code>, 
<code><a href="affine_trans_object_model_3d.html"><span data-if="hdevelop" style="display:inline">affine_trans_object_model_3d</span><span data-if="c" style="display:none">affine_trans_object_model_3d</span><span data-if="cpp" style="display:none">AffineTransObjectModel3d</span><span data-if="com" style="display:none">AffineTransObjectModel3d</span><span data-if="dotnet" style="display:none">AffineTransObjectModel3d</span><span data-if="python" style="display:none">affine_trans_object_model_3d</span></a></code>, 
<code><a href="union_object_model_3d.html"><span data-if="hdevelop" style="display:inline">union_object_model_3d</span><span data-if="c" style="display:none">union_object_model_3d</span><span data-if="cpp" style="display:none">UnionObjectModel3d</span><span data-if="com" style="display:none">UnionObjectModel3d</span><span data-if="dotnet" style="display:none">UnionObjectModel3d</span><span data-if="python" style="display:none">union_object_model_3d</span></a></code>
</p>
<h2 id="sec_see">参考其它</h2>
<p>
<code><a href="register_object_model_3d_global.html"><span data-if="hdevelop" style="display:inline">register_object_model_3d_global</span><span data-if="c" style="display:none">register_object_model_3d_global</span><span data-if="cpp" style="display:none">RegisterObjectModel3dGlobal</span><span data-if="com" style="display:none">RegisterObjectModel3dGlobal</span><span data-if="dotnet" style="display:none">RegisterObjectModel3dGlobal</span><span data-if="python" style="display:none">register_object_model_3d_global</span></a></code>, 
<code><a href="find_surface_model.html"><span data-if="hdevelop" style="display:inline">find_surface_model</span><span data-if="c" style="display:none">find_surface_model</span><span data-if="cpp" style="display:none">FindSurfaceModel</span><span data-if="com" style="display:none">FindSurfaceModel</span><span data-if="dotnet" style="display:none">FindSurfaceModel</span><span data-if="python" style="display:none">find_surface_model</span></a></code>
</p>
<h2 id="sec_module">模块</h2>
<p>
3D Metrology</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
